'use strict';

const Controller = require('egg').Controller;


class CartController extends Controller {

  // 新增
  async create() {
    const { ctx } = this;
    // 1获取数据
    console.log(11);
    const user_id = ctx.state.user.id;
    const { goods_id } = ctx.request.body;
    // TODO:// 2验证数据 数据验证未添加
    // 3操作数据库
    const res = await ctx.service.mall.pcWeb.cart.create(user_id, goods_id);
    res ? ctx.helper.success('加入购物车成功') : ctx.helper.error('加入购物车失败', 400);
  }

  // 获取购物车列表
  async index() {
    const { ctx } = this;
    // 1获取数据
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    // 2验证数据
    // 3操作数据库
    const res = await ctx.service.mall.pcWeb.cart.getList(ctx.request.query);
    res ? ctx.helper.success('获取购物车列表成功', res) : ctx.helper.error('获取购物车列表失败', 400);
  }


  // 删除
  async destroy() {
    const { ctx } = this;
    if (!ctx.request.body.ids) return ctx.helper.error('请选择要删除的选中项');
    const res = await ctx.service.mall.pcWeb.cart.destroy(ctx.request.body);
    res ? ctx.helper.success('删除成功') : ctx.helper.error('删除失败', 400);
  }

  // 更新购物车
  async update() {
    const { ctx } = this;
    const { id } = ctx.params;
    const { number, selected } = ctx.request.body;
    const res = await ctx.service.mall.pcWeb.cart.update({ id, number, selected });
    ctx.helper.success('更新购物车成功', res);
  }

  // 全选
  async selectAll() {
    const { ctx } = this;
    const res = await ctx.service.mall.pcWeb.cart.selectAll(ctx.state.user.id);
    res ? ctx.helper.success('全选成功', res) : ctx.helper.error('全选失败');
  }

  // 取消全选
  async unselectAll() {
    const { ctx } = this;
    const res = await ctx.service.mall.pcWeb.cart.unselectAll(ctx.state.user.id);
    res ? ctx.helper.success('取消全选成功', res) : ctx.helper.error('取消全选失败');
  }

  // 获取购物车总数量
  async totalCarts() {
    const { ctx } = this;
    const res = await ctx.service.mall.pcWeb.cart.totalCarts();
    ctx.helper.success('获取购物车商品总数量成功', res);
  }
}

module.exports = CartController;
